package com.heatup.apt.common.dao;

import com.baomidou.mybatisplus.mapper.AutoMapper;
import com.heatup.apt.model.AccessDevice;
import com.heatup.apt.model.DoorAccessPwd;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 进店密码
 *
 * @author 2016年11月15日 下午6:38:12
 */
@Component
public interface DoorAccessPwdMapper extends AutoMapper<DoorAccessPwd> {

    /**
     * 创建进店密码
     *
     * @param doorAccessPwd
     * @return
     */
    int createdDoorAccessPwd(DoorAccessPwd doorAccessPwd);

    /**
     * 根据订单id或者教练id查询进店密码
     *
     * @param id
     * @param type 0 表示订单 1 表示教练
     * @return
     */
    DoorAccessPwd queryDoorAccessPwdByRelationId(@Param("id") int id, @Param("type") int type);

    int queryDoorAccessPwdByPwd(@Param("password") String password, @Param("storeId") int storeId);

    /**
     * 根据主键ID 密码类型 查询密码
     *
     * @param relationId   主键ID /订单ID/教练ID/系统用户ID
     * @param relationType 密码类型 0 订单/1 教练/ 2 系统用户
     * @return
     */
    List<DoorAccessPwd> queryDoorAccessPwdListByRelation(@Param("relationId") Integer relationId, @Param("relationType") Integer relationType);

    /**
     * 查询门禁密码
     *
     * @param password
     * @return
     */
    DoorAccessPwd queryDoorAccessPwd(String password);

    /**
     * 查询门禁设备
     *
     * @param serialId 门禁序列号
     * @return
     */
    AccessDevice queryAccessDevice(String serialId);

    /**
     * 分页查询订单门禁密码
     *
     * @param paramsMap
     * @return
     */
    List<DoorAccessPwd> queryOrderAccessPwdList(Map<String, Object> paramsMap);

    /**
     * 查询订单门禁密码总数
     *
     * @param paramsMap
     * @return
     */
    int queryOrderAccessPwdCount(Map<String, Object> paramsMap);

    /**
     * 分页查询教练门禁密码
     *
     * @param paramsMap
     * @return
     */
    List<DoorAccessPwd> queryCoachAccessPwdList(Map<String, Object> paramsMap);

    /**
     * 查询教练门禁密码总数
     *
     * @param paramsMap
     * @return
     */
    int queryCoachAccessPwdCount(Map<String, Object> paramsMap);

    /**
     * 分页查询系统用户门禁密码
     *
     * @param paramsMap
     * @return
     */
    List<DoorAccessPwd> querySystemUserAccessPwdList(Map<String, Object> paramsMap);

    /**
     * 查询系统用户门禁密码总数
     *
     * @param paramsMap
     * @return
     */
    int querySystemUserAccessPwdCount(Map<String, Object> paramsMap);

    /**
     * 查询新的随机门禁密码 8位数
     *
     * @return 新的不重复的随机门禁密码 8位数
     */
    String queryNewRandomPassword();
}
